package com.lanting.meetingserver.util;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.List;

import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.util.FileCopyUtils;

public class UTF8StringHttpMessageConverter extends StringHttpMessageConverter {

	private static final MediaType utf8 = new MediaType("text","plain",
			 	 Charset.forName("UTF-8"));
			 	 private boolean writeAcceptCharset = true;
			 	 
			 	 @Override
			 	 protected MediaType getDefaultContentType(String dumy) {
			 	 return utf8;
			 	 }
			 	 
			 	 protected List<Charset> getAcceptedCharsets() {
			 	 return Arrays.asList(utf8.getCharSet());
			 	 }
			 	 
			 	 protected void writeInternal(String s, HttpOutputMessage outputMessage)
			 	 throws IOException {
			 	 if (this.writeAcceptCharset) {
			 	 outputMessage.getHeaders().setAcceptCharset(getAcceptedCharsets());
			 	 }
			 	 Charset charset = utf8.getCharSet();
			 	 FileCopyUtils.copy(s, new OutputStreamWriter(outputMessage.getBody(),
			 	 charset));
			 	 }
			 	 
			 	 public boolean isWriteAcceptCharset() {
			 	 return writeAcceptCharset;
			 	 }
			 	 
			 	 public void setWriteAcceptCharset(boolean writeAcceptCharset) {
			 	 this.writeAcceptCharset = writeAcceptCharset;
			 	 }

}
